Mapa de memoria
¿Que hay en cada rango de memoria?
RAM, ROM
Registros de vídeo, RAM de vídeo, tilemaps, sprites, display lists
Registros de sonido
Puertos de E/S (Controles)
Protección
Test de memoria del menú de servicio, da pistas sobre qué hay en cada área (a veces).
Gráficos
Hardware sistemas 2D:
Framebuffers
Tilemaps + Sprites
Framebuffers
Dibujar toda la pantalla cada frame pixel a pixel
Procesadores lentos=Haría falta un procesador dedicado a dibujar (existen sistemas así).
Blitters (DMAs de ROM/RAM a Framebuffer con efectos)
Gráficos: Tilemaps
Dibujado por hardware, 0% de CPU.
Mosaico de NxN piezas de MxM Pixels.
Piezas (Tiles) en ROM o RAM.
Área de memoria con las casillas.
Cada casilla, índice a tile + paleta de color.
Gráficos limitados a los tiles existentes.
Mosaico mas grande que la pantalla. Scroll H/V cambiando un registro. Movimiento “gratis” para la CPU.
Dos forma de emularlo:
Dibujar al framebuffer todo el tilemap cada frame.
Carga en textura y usar GPU para scroll, y mezcla. También “gratis” para el emulador.
Gráficos: Tilemaps
Características avanzadas
Transparencia
Prioridad mezclada con los sprites
Linescroll, Columnscroll
ROZ
Modificaciones por interrupciones raster
Gráficos: Sprites
Display List: Lista de índices en RAM o ROM + Paleta + posición.
Cada sprite, uno o mas tiles.
Prioridad, intercalación entre tilemaps.
Para emularlo, recorrer la display list y dibujar tiles al framebuffer.
También precargar como texturas y dibujar quads, (sobre sistemas con 3D potente pero poco procesador (PSP))
Gráficos
CPS1/CPS2: 3 Tilemaps (32×32,16×16,8×8 orden programable) + Sprites
NeoGeo: 1 Tilemap (8×8, fijo) + Sprites
PGM: 2 Tilemaps (8×8,16×16 orden fijo) + Sprites
Crystal System: Blitter
Model2: 2 Tilemaps (8×8 orden programable) + 3D.
Gráficos
Almacenamiento en ROM, una pesadilla.
Adivinar buscando gráficos conocidos (letras, números)
Cada fabricante su sistema:
CPS1/2: Bit interleaved en 4 roms. 1 bit de cada rom=pixel de 4bpp.
NeoGeo: Byte interleaved en 2 roms. Bloques de 4 bytes, 1 bit de cada byte en el bloque=4bpp
PGM: rom máscaras de pixels visibles + rom de colores (solo los visibles) empaquetados a 5bpp: 6 pixels en 32 bits (2 no usados)
CPS3: Tablas de sustitución de patrones de 2 bytes + compresión RLE. Fue un milagro.
Gráficos
Tilemap Texto (mascara)
Gráficos
Tilemap Texto (Color)
Gráficos
Tilemaps Scroll
Gráficos
Sprites (Posición)
Final
Gráficos
Gráficos: 3D
Display lists
DSPs para leer la display list y hacer T&L de polígonos.
Dos opciones:
Emular el DSP. Mas precisa pero mas lenta: MAME.
Estudiar el código del DSP y reescribirlo en el emulador optimizado (Model2 Emulator).
Rasterización:
Software render: Pixel accurate, más lento: MAME
Direct3D/OpenGL: Menos preciso. Más rápido, aprovecha tarjetas 3D. Model2 Emulator.
Gráficos: 3D
Geometría
Evolución de la emulación de 3D del emulador de Model2
Gráficos: 3D
Color
Gráficos: 3D
Texturas
Página anterior | Volver al principio del trabajo | Página siguiente |